Computers often have various input/output (I/O) controllers connected to peripheral devices such as flexible disks, tape drives, printers, scanners, etc. For example, computers compatible with the IBM PC-AT and IBM PS/2 personal computers typically have one or more flexible disk drives and one or more tape back-up devices being controlled by a single flexible disk controller. Each signal/control line in the I/O bus connects to each peripheral device. It is desirable to have a single design for driving and terminating I/O bus lines by peripheral devices which can work with any controller driver/termination design. However, different controllers for different host systems may place incompatible requirements on I/O bus line drive circuit design and I/O bus line termination within peripheral devices.
For example, for flexible disks and tape drives being controlled by flexible disk controllers, there is a data and control bus which is shared by the controller and each of the peripheral devices. Individual I/O bus lines may be driven by a single device such as the controller or some lines may be driven by each of the drives and the controller. Data rates for flexible disk I/O busses are on the order of one million bits per second. The quiescent state of each bus line is typically high with data represented by negative going pulses. The time between successive leading edges is critical so that the fall time of each pulse is critical. In general, the rise times are not critical but must be fast enough to recover at the required data rate. However, lines with slower rise times are more susceptible to noise.
At any one time, data transfer on the I/O bus is limited to the flexible disk controller and one selected peripheral device. The peripheral device is selected by either a hardware select line or a software command. Unselected devices on the I/O bus must present a high impedance load to the I/O bus.
Flexible disk controllers for computers compatible with the IBM PC-AT personal computers and drives connected to such controllers typically drive signal and control lines with an open collector driver. For these controllers and drives. each bus line is typically terminated by a single pull-up resistor. For fast rise times, the passive pull-up must be a low impedance. The pull-up resistor is typically located on the last device on the I/O bus. The pull-up is always present regardless of the select status of the last device.
Flexible disk controllers for computers compatible with the IBM PS/2 personal computers and drives connected to such controllers typically drive each I/O bus line with a three-state (also called tri-state or totem pole) driver circuit. These circuits actively pull each line high. These circuits typically have limited current sink/source ability so that for these controllers and drives, each bus line must be terminated in a relatively high impedance.
If a open ended driver is used with a high impedance termination, rise times will be too slow and the line will be susceptible to noise. If a three-state driver is used with a low impedance termination, the three-state driver may not be able to sink the current from the low impedance source. Therefore, no single driver/termination design will work in all applications. The typical industry solution is use removable terminators or some sort of adapter board. However, not all peripheral manufacturers provide adapters or removable termination resistors. In addition, end users installing a new peripheral device may not realize the need to reconfigure termination resistors. A design is needed which can be commanded to the proper termination configuration. Alternatively, a design is needed which can sense its environment and automatically adapt to provide the proper line termination and driver circuit configuration.